/// <summary>
/// C# 里的 lambda表达式需要一个委托容器
/// 
/// 缺点是订阅事件的函数若为lambda表达式
/// 则无法单独移除该函数
/// </summary>
class lambda表达式
{
    public static void 练习()
    {
        Func<int, string> result = x => { return x.ToString(); };
        // 仅有返回值语句可简写
        Func<int, string> result2 = x => x.ToString();

        System.Console.WriteLine(result2(42));

        int num = 13;
        
        System.Console.WriteLine(类JS回调练习(num => num * num, 4));
    }

    static int 类JS回调练习(Func<int, int> lambda表达式, int num)
    {
        return lambda表达式(num);
    }

    // 闭包练习
    // 闭包内部获取到的外部变量值为最终值
    // 而不是闭包函数调用时的外部变量值
}